A computer network is a collection of interconnected computing devices that can exchange data and share resources. In a packet-based network, such as the Internet, the computing devices communicate data by dividing the data into small blocks called packets, which are individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form. Dividing the data into packets enables the source device to resend only those individual packets that may be lost during transmission.
Certain devices, referred to as routers, maintain tables of routing information that describe routes through the network. A “route” can generally be defined as a path between two locations on the network. Upon receiving an incoming data packet, the router examines destination information within the packet to identify the destination for the packet. Based on the destination, the router forwards the packet in accordance with the routing table.
A router is associated with a numeric address, for example, an Internet Protocol (IP) address. This numeric address identifies the router and can be output by any of a number of system modules, such as Border Gateway Protocol (BGP) and Open Shortest Path First (OSPF) protocol modules. Generating numeric addresses in command output is useful and simple, and avoids problems inherent in name resolution. In many cases, however, the end user would be better served by displaying the symbolic names associated with the numeric addresses rather than the numeric addresses themselves.
In some routers, name resolution is handled by the module that generates the numeric address. The module typically queries a name server, e.g., a domain name server (DNS), which resolves the numeric address to a symbolic name. While this approach will usually produce a name, the process is time-consuming because the name server is typically not located in the same place as the router. The delay introduced by querying the name server can lead to packet blocking problems while the address is being resolved. Further, other activities, such as updating the router table, are delayed until the name is resolved. Additional problems may result if the name server is unavailable or not present.
Other routers use proxies to report the address information, rather than the modules themselves. While this approach may relieve some of the burden on the modules, it involves a more complex architecture.